package com.ray.mapper;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.CompanyBean;
import com.ray.bean.CompanyMaterialTableBean;
import com.ray.bean.GradeBean;
import com.ray.bean.UserBean;

public interface ShoppingMallMapper {

	/**
	 * 批量插入商城物料
	 * @param materialList
	 * @return
	 */
	int insertShoppingCallMaterialByList(@Param("list")List<CompanyMaterialTableBean> materialList);

	/**
	 * 添加物料(单个)
	 * @param companyMaterialTableBean
	 * @return
	 */
	int insertShoppingCallMaterial(CompanyMaterialTableBean companyMaterialTableBean);

	/**
	 * 获取公司发布的物料信息
	 * @param map
	 * @return
	 */
	List<CompanyMaterialTableBean> getShoppingCallMaterialData(Map map);
	int getShoppingCallMaterialDataCount(Map map);

	/**
	 * 修改
	 * @param companyMaterialTableBean
	 * @return
	 */
	int updateShoppingCallMaterial(CompanyMaterialTableBean companyMaterialTableBean);

	/**
	 * 下架物料
	 * @param map
	 * @return
	 */
	int offShoppingCallMaterial(Map map);

	/**
	 * 通过id获取物料
	 * @param id
	 * @return
	 */
	CompanyMaterialTableBean getShoppingCallMaterialById(@Param("id")String id);


	/**
	 * 加入到收藏夹
	 * @param map
	 * @return
	 */
	int addCollectionShoppingMaterialRecord(Map map);

	/**
	 * 获取此物料是非被公司收藏过
	 * @param map
	 * @return
	 */
	List<String> getCollectionShoppingMaterialRecordById(Map map);

	/**
	 * 获取公司重复物料的id
	 * @param materialTableBeans
	 * @param tableName 
	 * @return
	 */
	Set<String> getRepeatMaterialDetail(@Param("materialTableBeans")List<CompanyMaterialTableBean> materialTableBeans,@Param("tableName") String tableName);

	/**
	 * 根据商城id集合，删除收藏记录
	 * @param idSet
	 * @param loginCompany
	 * @return
	 */
	int updateCollectionStatus(@Param("idList")List<String> idList, @Param("loginCompany")String loginCompany,@Param("status")int status);

	/**
	 * 添加导入物料记录了
	 * @param notRepeatList
	 * @return
	 */
	int addImportRecord(@Param("notRepeatList")List<CompanyMaterialTableBean> notRepeatList);

	/**
	 * 获取收藏夹中的物料信息
	 * @param map
	 * @return
	 */
	List<CompanyMaterialTableBean> getCollectionMaterialData(Map map);
	int getCollectionMaterialDataCount(Map map);

	/**
	 * 获取所有厂家
	 * @return
	 */
	Set<String> getAllFactoryName();

	/**
	 * 获取商城导入到本公司记录
	 * @param map
	 * @return
	 */
	List<CompanyMaterialTableBean> getShoppingCallImportToCompanyRecord(Map map);
	int getShoppingCallImportToCompanyRecordCount(Map map);

	/**
	 * 获取商城物料分类
	 * @param map
	 * @return
	 */
	List<GradeBean> getShoppingCallMaterialType(Map map);

	/**
	 * 删除公司商城联系人
	 * @param map
	 * @return
	 */
	int deleteContactByCompanyName(Map map);

	/**
	 * 添加商城联系人
	 * @param map
	 * @return
	 */
	int addShoppingContact(Map map);

	/**
	 * 获取商城联系人
	 * @param map
	 * @return
	 */
	List<UserBean> getShoppingCallContactUser(Map map);

	/**
	 * 获取多公司的商城联系人与联系方式
	 * @param companySet
	 * @return
	 */
	List<UserBean> getManyCompanyShoppingContact(@Param("companySet")Set<String> companySet);

	/**
	 * 获取所有在商城发布物料的公司
	 * @return
	 */
	List<CompanyBean> getAllShoppingCallCompany();

	/**
	 * 获取可以导入到商城的物料
	 * @param map
	 * @return
	 */
	List<CompanyMaterialTableBean> getCanImportShoppingCallMaterial(Map map);
	int getCanImportShoppingCallMaterialCount(Map map);

	/**
	 * 获取四要素相同单id不同的条数
	 * @param companyMaterialTableBean
	 * @return
	 */
	int getFourParamEquealMaterialButNotEqualId(CompanyMaterialTableBean companyMaterialTableBean);

	/**
	 * 通过公司和物料代码获取商城物料
	 * @param materialCode
	 * @param company
	 * @return
	 */
	List<CompanyMaterialTableBean> getShoppingCallMaterialByMaterialCodeAndCompany(@Param("materialCode")String materialCode, @Param("company")String company,@Param("tableName") String tableName);

	/**
	 * 查找有没有重复的物料
	 * @param materialCodeSet
	 * @param company
	 * @return
	 */
	Set<String> checkRepaitMaterialCode(@Param("materialCodeSet")Set<String> materialCodeSet, @Param("company")String company);

	/**
	 * 获取公司的管理员  导入物料供应商信息里用到
	 * @param materialCompany
	 * @return
	 */
	CompanyBean getCompanyManagerUser(@Param("materialCompany")String materialCompany);




}
